<?php

namespace tools;
use app\common\model\ShopConfig;
use Requests;

class Kdniao extends Expressage
{


    public function logistics($code, $number, $extra = "")
    {
        //$customer,付费的模式下,顺丰快递需要快递单号对应的寄件人或收件人的手机号后四位数字
        $request_daata = "{'OrderCode':'','ShipperCode':'$code','LogisticCode':'$number','CustomerName':'$extra'}";

        $datas = array(
            'EBusinessID' => $this->app,
            'RequestType' => '1002',
            'RequestData' => urlencode($request_daata),
            'DataType' => '2',
        );

        //快递鸟请求接口类型
        $request_type = ShopConfig::get('kdniao', 'type');
        $search_url = 'https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx';
        //为付费类型时调整请求指令
        if ($request_type == 'pay') {
            $datas['RequestType'] = '8001';
        }

        $datas['DataSign'] = self::encrypt($request_daata, $this->key);

        $result = self::postXmlCurl($search_url, $datas);
        $result = json_decode($result,true);
        if(isset($result['Traces'])){
            $this->logistics_info = $result['Traces'];
        }
        $this->error = json_encode($result, JSON_UNESCAPED_UNICODE);
        return false;
    }


    //参数1：访问的URL，参数2：post数据(不填则为GET)，参数3：提交的$cookies,参数4：是否返回$cookies
    static function postXmlCurl($url,$post='',$cookie='', $returnCookie=0)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
        curl_setopt($curl, CURLOPT_REFERER, "http://XXX");
        if($post) {
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
        }
        if($cookie) {
            curl_setopt($curl, CURLOPT_COOKIE, $cookie);
        }
        curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
        curl_setopt($curl, CURLOPT_TIMEOUT, 10);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec($curl);
        if (curl_errno($curl)) {
            return curl_error($curl);
        }
        curl_close($curl);
        if($returnCookie){
            list($header, $body) = explode("\r\n\r\n", $data, 2);
            preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);
            $info['cookie']  = substr($matches[1][0], 1);
            $info['content'] = $body;
            return $info;
        }else{
            return $data;
        }
    }

}